package br.com.fafica.librarycourier.funcionario.model;


public class RepositorioFuncionarioArray implements IRepositorioFuncionario {

	
	private Funcionario[] funcionarios;
	private int indice;
	public static final int tamanho = 5;
	
	public RepositorioFuncionarioArray(){
		funcionarios = new Funcionario [tamanho];
		indice = 0;
	}
	
	RepositorioFuncionarioArray(Funcionario[] funcionarios, int indice){
		this.funcionarios = funcionarios;
		this.indice = indice;
	}

	public void inserir (Funcionario funcionario){
		funcionarios[indice] = funcionario;
		indice = indice + 1;
	}

	public void remover (String codigo) throws FuncionarioNaoEncontradoException{
		int i = getIndice(codigo);
		funcionarios[i] = funcionarios[indice - 1];
		indice = indice - 1;
		funcionarios[indice] = null;
	}



	public void atualizar(Funcionario funcionario) throws FuncionarioNaoEncontradoException{
		int i = getIndice(funcionario.getCodigo());
		funcionarios[i] = funcionario;
	}
	
	public boolean existe(String codigo) {
	       boolean resposta;
	       try {
	           getIndice(codigo);
	           resposta = true;
	       } catch(FuncionarioNaoEncontradoException ex) {
	           resposta = false;
	       }
	       return resposta;
	}
	
	private int getIndice(String codigo) throws FuncionarioNaoEncontradoException{
		int resposta = -1;
		boolean achou = false;
		for (int i = 0; !achou && (i < indice); i = i + 1){
			if (funcionarios[i].getCodigo().equals(codigo)){
				resposta = i;
				achou = true;
			}
		}
		if (!achou) throw new FuncionarioNaoEncontradoException(codigo);
		return resposta;
	}



	public Funcionario procurar(String codigo) throws FuncionarioNaoEncontradoException {
		int i = getIndice(codigo);
		System.out.println("teste");
		return funcionarios[i];
	}


}




